package br.com.requisicao.compra.Bean;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import br.com.requisicao.compra.canonico.Cidade;
import br.com.requisicao.compra.constantes.ConstantesMensagensErros;
import br.com.requisicao.compra.exception.BeanException;
import br.com.requisicao.compra.service.impl.CidadeService;

@ManagedBean(name = "consultaCidadeBean")
@SessionScoped
public class ConsultaCidadeBean {

	private Cidade excluirCidade;
	private List<Cidade> cidades = new ArrayList<Cidade>();

	public void consultar(ActionEvent event) {

		try {
			this.cidades = new CidadeService().obtemCidade();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	public String excluir() {
		FacesContext context = FacesContext.getCurrentInstance();
		Boolean deletou = false;
		try {
			deletou = new CidadeService().excluir(this.excluirCidade);

			if (deletou) {
				this.cidades.remove(this.excluirCidade);
				this.excluirCidade = null;
			}
		} catch (BeanException e) {
			context.addMessage(
					null,
					new FacesMessage(FacesMessage.SEVERITY_ERROR, e
							.getMessage(), e.getMessage()));
		} catch (Exception e) {
			e.printStackTrace();
			FacesMessage msg = new FacesMessage(
					ConstantesMensagensErros.ERRO_INESPERADO_EXCLUIR_CIDADE);
			msg.setSeverity(FacesMessage.SEVERITY_ERROR);
			context.addMessage(null, msg);
		}
		return null;
	}

	/**
	 * @return the excluirCidade
	 */
	public Cidade getExcluirCidade() {
		return excluirCidade;
	}

	/**
	 * @param excluirCidade
	 *            the excluirCidade to set
	 */
	public void setExcluirCidade(Cidade excluirCidade) {
		this.excluirCidade = excluirCidade;
	}

	/**
	 * @return the cidades
	 */
	public List<Cidade> getCidades() {
		return cidades;
	}

	/**
	 * @param cidades
	 *            the cidades to set
	 */
	public void setCidades(List<Cidade> cidades) {
		this.cidades = cidades;
	}
}